<?php
// 启动会话
session_start();
// 设置头部
// header("Content-Type:text/html;charset=utf-8");
header("Content-Type:image/png");


// 验证码长度固定为4 给1个方法用于方便调用 strlen
function strrang($length = 4){
    // 给个字符串
    $str = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //让字符串打乱
    $strluan = str_shuffle($str);
    //截取字符串
    return substr($strluan,0,$length);    
}   


// 设置图片的宽和高
$width = 200;
$height = 80;


// 先创建图片对象
$img = imagecreatetruecolor($width,$height);
// 给验证码设置背景颜色
$bgr = mt_rand(0,255);
$bgg = mt_rand(0,255);
$bgb = mt_rand(0,255);
$backcolor = imagecolorallocate($img,$bgr,$bgg,$bgb);

//绘制图片背景
imagefilledrectangle($img,0,0,$width,$height,$backcolor);
//第2个和第3个参数是左上角坐标
//第4个和第5个参数是右下角坐标
//这两个坐标可以确定一块矩形区域
$imgcode = "";

// 使用for循环 把 字符串每次截取一个给实现
for($i = 0; $i < 4; $i++){
    $code = strrang(1);
    $imgcode .=  $code;
    //给字体设置颜色
    $textr = mt_rand(0,255);
    $textg = mt_rand(0,255);
    $textb = mt_rand(0,255);
    $textcolor = imagecolorallocate($img, $textg, $textb, $textcolor);
    $x = 35*($i+1);
    //引入字体库 去天下字体去下载 把文件的名字更改为英文  D:\phpstudy_pro\WWW\phpcode\admin D:\phpstudy_pro\WWW\phpcode\admin\assets\font
    $font = "D:/phpstudy_pro/WWW/phpcode/admin/assets/font/font.ttf";
    //将字体显示在图片显示
    imagefttext($img,20,0,$x,50,$textcolor,$font,$code);
    //第一个参数是图片变量
    //第二个参数是字体大小
    //第三个参数是字符倾斜度,负数向左,正数向右,数值越大角度越大
    //第四个和第五个参数是字符所在位置的x坐标和y坐标
    //第六个参数是字符颜色
    //第七个参数是字体库
    //第八个参数是需要放进去的字符
}
// 整体做完使用cookie

// setcookie("imgcode1",$imgcode1);
// 使用session存值
$_SESSION["vercode"] = $imgcode;
//绘制一些点状像素 循环就相当于添加多少个像素点
for($i = 0; $i < 200; $i++){
    //给字体设置颜色
    $r = mt_rand(0,255);
    $g = mt_rand(0,255);
    $b = mt_rand(0,255);
    $xiangsucolor = imagecolorallocate($img,$r,$g,$b);


    // 设置像素点的位置
    $x = mt_rand(0,$width);
    $y = mt_rand(0,$height);
    imagesetpixel($img,$x,$y,$xiangsucolor);
     //第二个和第三个参数是点的位置坐标
    //第四个参数是点的颜色
}
//绘制线像素
for($i = 0; $i < 15; $i++){
    $r = mt_rand(0,255);
    $g = mt_rand(0,255);
    $b = mt_rand(0,255);
    $xiancolor = imagecolorallocate($img,$r,$g,$b);

    $x = mt_rand(0,$width);
    $y = mt_rand(0,$height);

    $x1 = mt_rand(0,$width);
    $y1 = mt_rand(0,$height);

    //线像素
    imageline($img,$x1,$y1,$x,$y,$xiancolor);
    //第2/3/4/5个参数是线的两端坐标

}








//相当于打印 image 后面 是看你图片后缀是啥
imagepng($img);

?>